package models;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import static javax.persistence.GenerationType.IDENTITY;
@Entity
@Table(name="products")
public class Product {
public static final int IN_STOCK = 1;
private int id;
private Category category;
private String name;
private String description;
private double price;
private int inStock;
private List<ShoppingCartProduct> shoppingCartProducts;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name="id")
public int getId() {
return id;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "categories_id")
public Category getCategory() {
return category;
}
@Column(name="name")
public String getName() {
return name;
}
@Column(name="description")
public String getDescription() {
return description;
}
@Column(name="price")
public double getPrice() {
return price;
}
@Column(name="in_stock")
public int getInStock() {
return this.inStock;
}
@OneToMany(mappedBy = "product")
public List<ShoppingCartProduct> getShoppingCartProducts() {
return this.shoppingCartProducts;
}
public void setId(int id) {
this.id = id;
}
public void setCategory(Category category) {
this.category = category;
}
public void setName(String name) {
this.name = name;
}
public void setDescription(String description) {
this.description = description;
}
public void setPrice(double price) {
this.price = price;
}
public void setInStock(int inStock) {
this.inStock = inStock;
}
public void setShoppingCartProducts(List<ShoppingCartProduct> shoppingCartProducts) {
this.shoppingCartProducts = shoppingCartProducts;
}
// @Transient
// public boolean isInStock() {
// return this.inStock == IN_STOCK;
// }
@Override
public String toString() {
return "Product {id: "+this.id+", name: "+this.name+", category: "+this.category+", price: "+this.price+", in stock: "+this.inStock+"}";
}
}